package viewInterfaces;

import java.util.List;

import model.EventType;
import model.Prediction;
import modelInterfaces.IEventType;
import modelInterfaces.IPrediction;
import modelInterfaces.ISubject;
import view.ViewRunSetup;
import controller.ControllerDBConnectionSetup;
import controllerInterfaces.IControllerDBConnectionSetup;
import controllerInterfaces.IControllerRunSetup;

/**
*
* Interface of {@link ViewRunSetup} controller class according to Abstract Factory design pattern.
*/
public interface IViewRunSetup extends IViewFrame {
	
	
	/**
	 * Set the MVC++ Controller Class for this View.</br>
	 * ControllerDBConnectionSetup is manipulable through {@link IControllerDBConnectionSetup} interface
	 * @param	controller	MVC++ Controller
	 * @see	ControllerDBConnectionSetup
	 * @see IControllerDBConnectionSetup
	 */		
	public void setController(IControllerRunSetup controller);
	
	
	/**
	 * Set the list of subject or users in current JList</br>
	 * Each of the set {@link User} is manipulable through its {@link IUser} interface.
	 * @param	userList	list of {@link User}
	 * @see 	IUser
	 * @see		User
	 */		
	public void setUserList(List<ISubject> userList);
	
	
	
	/**
	 * Set the list of predictions in current TextArea</br>
	 * Each of the set {@link Prediction} is manipulable through its {@link IPrediction} interface.
	 * @param	predictionList	list of {@link Prediction}
	 * @see 	IPrediction
	 * @see		Prediction
	 */	
	public void setPredictions(List<IPrediction> predictionsList);


	
	/**
	 * Set the list of event type in current JList</br>
	 * Each of the set {@link EventType} is manipulable through its {@link IEventType} interface.
	 * @param	eventTypesList	list of {@link EventType}
	 * @see 	IEventType
	 * @see		EventType
	 */	
	public void setEventTypeList(List<IEventType> eventTypesList);
}
